Questions
10 of 12
1A client gets a dimension-mismatch error when inserting a point. What are the most common root causes?
2A filter query that should return results returns an empty list. What would you check first?
3Why might a collection created without specifying a distance metric or vector size fail immediately, and what does that tell you about how Qdrant treats collection configuration?
4What causes a 'collection not found' error immediately after a collection was reportedly created successfully in a distributed cluster?
5Search results seem semantically wrong even though the embedding model is known to work well. What layers would you check to isolate the problem?
6Recall dropped noticeably after enabling quantization. How would you determine whether the quantization configuration or the rescoring settings are the cause?
7A previously fast query has become slow after months of continuous upserts and deletes, with no configuration changes. What's the most likely explanation?
8How would you distinguish a latency problem caused by disk I/O from one caused by CPU-bound distance computation?
9One node in a three-node Qdrant cluster crashes. What happens to reads and writes for shards that had a replica on that node?
10After a crashed node recovers and rejoins the cluster, how does it catch up on writes it missed?
11What symptoms would indicate a 'split-brain' style problem in a distributed Qdrant cluster, and how does the Raft-based consensus layer prevent it?
12What's your recovery plan if an entire Qdrant cluster is lost (e.g., all nodes' disks fail) and you only have periodic snapshots?
10 / 12

After a crashed node recovers and rejoins the cluster, how does it catch up on writes it missed?

WAL replay from the primary, or snapshot transfer for large gaps

When a node recovers and rejoins the cluster, the cluster compares the state of each shard on that node with the state of the current primary for that shard. If the gap is small - the node was down briefly and the WAL still contains the operations it missed - the node catches up by replaying the WAL entries from where it left off. The primary streams the operations, and the recovering replica applies them in order until it is caught up. If the gap is large - the node was down for a long time, or the WAL has been truncated past the point where the node left off - a full snapshot transfer is used. The primary produces a snapshot of the shard's current state, transfers it to the recovering node, and the node applies it and resumes consuming the WAL. The choice between WAL replay and snapshot transfer is automatic and depends on the size of the gap relative to the available WAL history.

The mechanism relies on two properties of the WAL. First, the WAL is a sequence of operations in order, so replaying it from a known point reconstructs the state deterministically. Second, the WAL is not kept forever - it is truncated once the operations are flushed into segments and all replicas have consumed them. The truncation is what makes WAL replay bounded: if a replica is far behind, the entries it needs may have been deleted. The snapshot mechanism handles this case by transferring the current state directly rather than reconstructing it from history. For the recovering node, the process is: identify which shards it hosts, identify the current primary for each, request synchronization, receive either WAL entries or a snapshot, apply them, and then rejoin the replication stream. During this catch-up, the shard remains available through the primary and any other replicas; the recovering node does not serve traffic for that shard until it is caught up. The cluster's overall availability is therefore not affected by the recovery process, only the redundancy level is reduced until the recovery completes.

  1. 1

    Small gap: WAL replay from where the node left off.

  2. 2

    Large gap: full snapshot transfer followed by WAL replay of recent entries.

  3. 3

    Trigger: the size of the gap relative to the available WAL history.

  4. 4

    Truncation: WAL entries are deleted once they are flushed to segments and consumed by all replicas, which bounds replay.

  5. 5

    Availability: the shard remains served by the primary and other replicas during the recovery; the recovering node does not serve until caught up.

  6. 6

    Redundancy: reduced until the recovery completes, which matters if another failure occurs during recovery.

  7. 7

    Monitoring: replication lag and catch-up progress are the key metrics to watch during recovery.

The trade-off is between recovery speed and resource consumption. WAL replay is fast and low-impact when the gap is small. Snapshot transfer is slower and consumes network bandwidth and I/O on both the primary and the recovering node, which can affect query latency during the transfer. For very large shards, the snapshot transfer can take a long time, and during that window the cluster is running with reduced redundancy. The common mistake is to assume that recovery is instant and to plan capacity as if the node is immediately back at full redundancy. The second mistake is to set the WAL retention too aggressively, which forces snapshot transfer even for short outages and slows recovery. The third mistake is to ignore the resource impact of snapshot transfer on the primary - a large snapshot can cause query latency spikes, and you may want to schedule recovery during off-peak hours. The alternative to waiting for automatic recovery is to explicitly re-add the node to the cluster and let the cluster place new shards on it, but this requires the node to be healthy and the cluster to have the capacity to move data. Version note: the exact recovery mechanism (WAL replay versus snapshot, the snapshot transfer protocol, and the behavior of the cluster during recovery) has changed across Qdrant releases. Some versions have more efficient incremental recovery; others rely more heavily on snapshots. Test recovery on your version to understand the time and resource cost.

javascript

Version-dependent: the recovery protocol, the snapshot format, and the cluster's behavior during recovery have changed across releases. Some versions support incremental snapshots that reduce transfer size; others do not. The exact API for triggering or monitoring recovery may also differ. If recovery time is important for your SLA, benchmark it on your version with your data sizes rather than assuming a fixed duration.

Difficulty: 8/10
Topics: Replication, Write-Ahead Log, Node Failure, Recovery

Scenario Questions

0-2 years experience
  1. 1

    A node was down for five minutes and comes back. Explain what happens and how long you would expect recovery to take.

  2. 2

    A node was down for a week and comes back. Explain why the recovery approach is different and what the impact is.

2-5 years experience
  1. 1

    You see a spike in query latency on the primary during a node recovery. Explain why and what you would do about it.

  2. 2

    You are planning a maintenance window and want to minimize the recovery time afterward. Describe the configuration changes and the operational steps.

5-8 years experience
  1. 1

    Design a disaster recovery plan that includes a recovery time objective (RTO) and describes how you would achieve it with Qdrant's snapshot and replication mechanisms.

  2. 2

    You must recover a node with a 1TB shard. Estimate the snapshot transfer time and describe how you would reduce it without losing data.

8+ years experience
  1. 1

    You are designing a system that must maintain full redundancy at all times, even during node recovery. Describe the architecture and the trade-offs versus a standard replication-based deployment.

  2. 2

    A region-wide failure requires restoring from snapshots. Describe the recovery procedure, the validation, and how you would communicate the RPO and RTO to stakeholders.

Follow-up Questions

  • How would you set the WAL retention configuration to balance recovery speed against disk usage?
  • If a node is down for a very long time and the snapshot transfer would take hours, what options do you have to speed up recovery or restore redundancy sooner?